/*
 * $Id: XLIWriter.h,v 1.3 2006-02-10 04:57:34 bacon Exp $
 */

#ifndef _XPP_XLI_XLIWRITER_CLASS_
#define _XPP_XLI_XLIWRITER_CLASS_

#include <xpp/xli/XLI.h>

namespace xpp
{
	namespace xli
	{

		class XLIWriter: public Uncopyable 
		{
		public:
			XLIWriter ();
			virtual ~XLIWriter ();

			XLI* write (XLI* xli);
			virtual int writeChar (xp_char_t c) = 0;

		protected:
			XLI* write_xli (XLI* xli, xp_size_t tabs);
			int write_str (const xp_char_t* str);
			int write_str_escape (const xp_char_t* str);
			int write_str_escape (const xp_char_t* str, xp_size_t len);
			int write_char (xp_char_t c);
			int write_char_escape (xp_char_t c);
		};

	}
		
}
		
#endif
